package br.com.ifpbmonteiro.pibict.photogeo.dados;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import br.com.ifpbmonteiro.pibict.photogeo.objetos.FaceDetectada;

public class FacesDetectadasCRUD implements FacesDetectadasCrudIF{

	private Context context;
	
	public FacesDetectadasCRUD(Context context){
		FotografiasBaseDeDados.getInstance(context);
		this.context = context;
	}


	
	/* (non-Javadoc)
	 * @see br.com.ifpbmonteiro.pibict.photogeo.dados.FacesDetectadasCrudIF#adicionaFace(android.database.sqlite.SQLiteDatabase, br.com.ifpbmonteiro.pibict.photogeo.objetos.FaceDetectada, int)
	 */
	@Override
	public long adicionaFace(FaceDetectada faceDetectada,int fotoId) {

		ContentValues contentValues = new ContentValues();
		contentValues.put("distancia_dos_olhos",
				faceDetectada.getDistanciaDosOlhos());
		contentValues.put("confianca", faceDetectada.getConfianca());
		contentValues.put("ponto_medio_x", faceDetectada.getPontoMedioX());
		contentValues.put("ponto_medio_y", faceDetectada.getPontoMedioY());
		contentValues.put("altura_area_face", faceDetectada.getAltura());
		contentValues.put("largura_area_face", faceDetectada.getLargura());
		contentValues.put("fotografia", fotoId);

		return FotografiasBaseDeDados.getInstance(context).getWritableDatabase().insert(FotografiasBaseDeDados.FACE_ENCONTRADA_NOME_TB, null, contentValues);

	}

	
	/* (non-Javadoc)
	 * @see br.com.ifpbmonteiro.pibict.photogeo.dados.FacesDetectadasCrudIF#atualizaFaceDetectada(br.com.ifpbmonteiro.pibict.photogeo.objetos.FaceDetectada, int)
	 */
	@Override
	public void atualizaFaceDetectada(FaceDetectada faceDetectada, int fotoId) {

		ContentValues contentValues = new ContentValues();
		contentValues.put("distancia_dos_olhos",faceDetectada.getDistanciaDosOlhos());
		contentValues.put("confianca", faceDetectada.getConfianca());
		contentValues.put("ponto_medio_x", faceDetectada.getPontoMedioX());
		contentValues.put("ponto_medio_y", faceDetectada.getPontoMedioY());
		contentValues.put("altura_area_face", faceDetectada.getAltura());
		contentValues.put("largura_area_face", faceDetectada.getLargura());
		contentValues.put("fotografia", fotoId);
		
		FotografiasBaseDeDados.getInstance(context).getWritableDatabase().update(FotografiasBaseDeDados.FACE_ENCONTRADA_NOME_TB, contentValues, FotografiasBaseDeDados.FACE_ENCONTRADA_COLS[0] +" = "+ faceDetectada.getId(), null);
	
	}

	/* (non-Javadoc)
	 * @see br.com.ifpbmonteiro.pibict.photogeo.dados.FacesDetectadasCrudIF#removeFotografiaAnotada(int)
	 */

	@Override
	public void removeFaceDetectada(int id) {
		
		FotografiasBaseDeDados.getInstance(context).getWritableDatabase().delete(FotografiasBaseDeDados.FACE_ENCONTRADA_NOME_TB, FotografiasBaseDeDados.FACE_ENCONTRADA_COLS[0]+" = "+id, null);
		
	}

	/* (non-Javadoc)
	 * @see br.com.ifpbmonteiro.pibict.photogeo.dados.FacesDetectadasCrudIF#carregaFacesDetectadas()
	 */
	@Override
	public ArrayList<FaceDetectada> carregaFacesDetectadas() {
		Cursor cursor = FotografiasBaseDeDados.getInstance(context).getReadableDatabase().query(FotografiasBaseDeDados.FACE_ENCONTRADA_NOME_TB,
				FotografiasBaseDeDados.FACE_ENCONTRADA_COLS, null, null, null, null, null);

		ArrayList<FaceDetectada> facesDetectadas = new ArrayList<FaceDetectada>();

		cursor.moveToFirst();
		while (cursor.moveToNext()) {

			facesDetectadas.add(cursorParaFaceDetectada(cursor));

		}

		return facesDetectadas;

	}




	@Override
	public FaceDetectada buscaFacePorId() {

		return new FaceDetectada();
	}


	@Override
	public FaceDetectada buscaFacePorFotografia() {

		return new FaceDetectada();
	}

	/* (non-Javadoc)
	 * @see br.com.ifpbmonteiro.pibict.photogeo.dados.FacesDetectadasCrudIF#cursorParaFaceDetectada(android.database.Cursor)
	 */
	@Override
	public FaceDetectada cursorParaFaceDetectada(Cursor cursor) {
		FaceDetectada faceDetectada = new FaceDetectada();

		faceDetectada.setId(cursor.getInt(0));
		faceDetectada.setDistanciaDosOlhos(cursor.getFloat(1));
		faceDetectada.setConfianca(cursor.getFloat(2));
		faceDetectada.setPontoMedioX(cursor.getFloat(3));
		faceDetectada.setPontoMedioY(cursor.getFloat(4));
		faceDetectada.setIdentidade(cursor.getString(5));
		faceDetectada.setAltura(cursor.getFloat(6));
		faceDetectada.setLargura(cursor.getFloat(7));

		return faceDetectada;

	}

	
	
}
